//---------------------------------------------------------------------------

#ifndef BoardsH
#define BoardsH
#include "Boards.h"
#include "Coin.h"
#include<iostream>
using namespace std;
 class Boards{

	private:

	int turn;
	 int battleMode;
	 bool endGame;
	int area[8][8] ;
	 bool pauseGame;
	 bool enemyFront;
	int currentCoin;
	int comLevel;
	 Coin myCoin[16];

	public :
	Boards();
	void initArea();
	void initCoin();
	void fillArea();
	void printArea();
	void playerTurn();
	void playGame();
	void initGame();
	void moveCoin();
	void gameLoop();
	void moveCoinTo(int moveTo); // menggerakkan coin ke suatu arah
	void refresh();
	void coinMoveLeftUp(int coin);
	void coinMoveLeftDown(int coin);
	void coinMoveRightUp(int coin);
	void coinMoveRightDown(int coin);
	bool existCoinLeftUp(int coin);
	bool existCoinLeftDown(int coin);
	bool existCoinRightUp(int coin);
	bool existCoinRightDown(int coin);
	bool passLeftUp(int coin);
	bool passLeftDown(int coin);
	bool passRightUp(int coin);	
	bool passRightDown(int coin);
	Coin getCoin(int coin);
	int checkArea(int coin);
	bool isLeftSide(int coin);
	bool isRightSide(int coin);
	bool isUpSide(int coin);
	bool isDownSide(int coin);
	
	void printCoin(); // print map berdasarkan letak koin
	int getType(int coin); // mendapatkan tipe coin apakah lawan atau teman
	int getCoinNumberFromArea(int x, int y); // mendapatkan nomor coin dari suatu area
	bool isPassAble(int coin, int dir); // mengecek apakah arah yang dimasukkan bisa dilewati atau tidak
	bool isForceEnemy(); // jika ada coin yang sedang berhadapan dengan lawan
	void enemyBlast(int coin);
	bool stillForceEnemy(int coin);
	void passCoinTo(int moveTo);
	void playerMovement(int *moveTo);
	void comAIMovement(int *moveTo);
	int frontKiller(); // memutuskan memilih coin yang paling depan
	int frontPassKill(); // memutuskan memakan lawan yang paling depan dan samping
	int sideCoin(); // pilihan coin yang paling samping
	int sideMove(); // pilihan gerakan yang paling samping
	
	bool ableToMove(int coin, int side); // mengembalikan true jika boleh melangkah
	bool ableToMove(int coin); // mengembalikan true jika boleh melangkah
	int anyWhereCanMove(int coin); // mengembalikan arah kemanapun dia bisa melangkah
	bool moreChanceToKill();
	bool moreChanceToMove();
	bool corner(int coin, int id); // mengecek apakah coin berada di sudut
};
//---------------------------------------------------------------------------
#endif
